#pragma once

#include <AVUIModel3D.h>
#include <AVUIColor.h>

namespace AVUI {

class Light : public Model3D
{
public:

    DECLARE_ELEMENT(Light, Model3D);

    DECLARE_DEPENDENCY_PROPERTY(Color);
    Color get_Color() { return AVUI::UnboxValue<Color>(GetValue(get_ColorProperty())); }
    void set_Color(const Color& value) { SetValue(get_ColorProperty(), AVUI::BoxValue(value)); } 

    virtual void Render3D(Renderer* pRenderer, const Matrix3D& parentMatrix) { };
    virtual void RenderDependencies3D(Renderer* pRenderer) { };

    virtual Rect3D CalculateSubgraphBoundsInnerSpace() AVUI_OVERRIDE; 
    virtual void RayHitTestCore(RayHitTestParameters* pRayParams) AVUI_OVERRIDE { }

private:
    static void StaticConstructor();

};


}; // namespace AVUI
